﻿#pragma once
#include<vector>
#include<set>
#include <map>
#include <deque>
#include <iostream>
using namespace std;
// 用于存储图的节点及其相邻节点的结构体变量类型
struct SGNode {
	int key; //结点自身标识
	map<int, float> neighNodes; //与当前结点相邻的结点集合，及其与相邻结点之间 路径的权值
};
//用于存储边的结构体变量类型
struct SGEdge {
	int start;
	int end;
};
//用于存储边及其权重的map容器（注意：会按照权重自小而大自动排序） 
typedef map<float, SGEdge> EdgeSet;
class CMyGraph
{
public:
	CMyGraph(void);
	~CMyGraph(void);
public: //其他函数，供实例调用
	void DFS();
		void DFS(int i, vector<int>& mystack, bool* visited);
		void BFS();
		void BFS(int i, deque<int>& mydeque, bool* visited);
		void Prim();
		void Kruskal();
protected: //属性变量
/*自行设计完成*/ private: //成员变量
	vector<SGNode> NodeSet;
};
